//Copyright (C) 2005  Neale Clark
//
//This program is free software; you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation; either version 2 of the License, or
//(at your option) any later version.
//
//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//GNU General Public License for more details.
//
//You should have received a copy of the GNU General Public License
//along with this program; if not, write to the Free Software
//Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

package tat2;

import java.util.HashMap;
import java.util.*;

/**This class represents Classes in this application. Objects of this class
 * know their name, have a collection of TATAtt objects representing their
 * attributes and can provide a plain text or XML representation of
 * themselves.
 */
public class TATClass
    extends TATObj {

  private java.util.HashMap attributes;

  public TATClass(String name) {

    this.name = name;
    //A HashMap that will contain the TATAtt atributes of the class
    attributes = new HashMap();

  }

  public java.util.HashMap getAttributes() {
    return attributes;
  }

  public void setAttributes(java.util.HashMap attributes) {
    this.attributes = attributes;
  }

  public String toString() {
    String retString = "\t" + name + "\n";
    if (!attributes.isEmpty()) {
      Iterator it = attributes.keySet().iterator();
      while (it.hasNext()) {
        retString += attributes.get(it.next()).toString();
      }
    }
    return retString + "\n";
  }

  public String toXML() {
    if (attributes.isEmpty()) {
      return "\n\t<class>" + name + "</class>";
    }
    else {
      String cXml = "\n\t<class>" + name;
      Iterator it = attributes.keySet().iterator();
      while (it.hasNext()) {
        TATAtt a = (TATAtt) attributes.get(it.next());
        cXml += a.toXML();
      }
      return cXml + "\n\t</class>";
    }
  }

  public Set getAttSet() {
    return attributes.keySet();
  }

  public void removeAttribute(String name) {
    attributes.remove(name);
  }

}